package com.hm.health.Utils;

import android.util.Log;

import java.io.File;
import java.util.HashMap;
import java.util.List;

/**
 * Created by chenshi on 2017/12/19.
 */
public class FileUtil {
    private static final String TAG = FileUtil.class.getSimpleName();

    /**
     * @param path
     * @param fileList 注意的是并不是所有的文件夹都可以进行读取的，权限问题
     */
    private void getFileList(File path, HashMap<String, String> fileList) {
        //如果是文件夹的话
        if (path.isDirectory()) {
            //返回文件夹中有的数据
            File[] files = path.listFiles();
            //先判断下有没有权限，如果没有权限的话，就不执行了
            if (null == files)
                return;

            for (int i = 0; i < files.length; i++) {
                getFileList(files[i], fileList);
            }
        } else {
            //如果是文件的话直接加入
            Log.i(TAG, path.getAbsolutePath());
            //进行文件的处理
            String filePath = path.getAbsolutePath();
            //文件名
            String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
            //添加
            fileList.put(fileName, filePath);
        }
    }

    /**
     * @param path
     * @param fileList 注意的是并不是所有的文件夹都可以进行读取的，权限问题
     */
    public static void getFileList(File path, List<String> fileList) {
        //如果是文件夹的话
        if (path.isDirectory()) {
            //返回文件夹中有的数据
            File[] files = path.listFiles();
            //先判断下有没有权限，如果没有权限的话，就不执行了
            if (null == files)
                return;

            for (int i = 0; i < files.length; i++) {
                getFileList(files[i], fileList);
            }
        } else {
            //如果是文件的话直接加入
            Log.i(TAG, path.getAbsolutePath());
            //进行文件的处理
            String filePath = path.getAbsolutePath();
            //文件名
            String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
            //添加
            fileList.add(fileName);
        }
    }

    public static void getFileList(String filePath, List<String> fileList) {
        File file = new File(filePath);
        getFileList(file, fileList);
    }

    /**
     * 删除单个文件
     * @param   filePath    被删除文件的文件名
     * @return 文件删除成功返回true，否则返回false
     */
    public static boolean deleteFile(String filePath) {
        if (null == filePath) {
            return false;
        }

        File file = new File(filePath);
        if (file.isFile() && file.exists()) {
            return file.delete();
        }
        return false;
    }

    public static void deleteDir(String deviceConfigPath) {
        File dir = new File(deviceConfigPath);
        String[] fileNames = dir.list();
        if (null != fileNames) {
            for (String f : fileNames) {
                FileUtil.deleteFile(deviceConfigPath + f);
            }
        }
    }
}
